#ifndef FTPWINDOW_H
#define FTPWINDOW_H

#include <QDialog>
#include <QHash>

class Loom;

QT_BEGIN_NAMESPACE
class QDialogButtonBox;
class QFile;
class QFtp;
class QLabel;
class QLineEdit;
class QTreeWidget;
class QTreeWidgetItem;
class QHostAddress;
class QProgressDialog;
class QPushButton;
class QUrlInfo;
QT_END_NAMESPACE

class FtpWindow : public QDialog
{
    Q_OBJECT

public:
    FtpWindow(QWidget *parent, const Loom& jc);
    ~FtpWindow();
    QSize sizeHint() const;

private slots:
    void connectJC     ();
    void downloadFile  ();
    void removeFile    ();
    void cancelDownload();

    void ftpCommandFinished(int commandId, bool error);
    void addToList(const QUrlInfo &urlInfo);
    //void processItem(QTreeWidgetItem *item, int column);
    void updateDataTransferProgress(qint64 readBytes,
                                    qint64 totalBytes);
    void enableButtons();

private:
    const Loom& mr_jc;
    QFile *mp_file;

    QLabel *ftpServerLabel;
    QLabel *statusLabel;
    QTreeWidget *fileList;
    QPushButton *removeButton;
    QPushButton *downloadButton;
    QPushButton *quitButton;
    QDialogButtonBox *buttonBox;
    QProgressDialog *progressDialog;

    QHash<QString, bool> isDirectory;
    QString currentPath;
    QFtp *ftp;
};

#endif
